package com.example.translateappjava.DataBase;

// 包声明。


// 导入Android SDK中的类。
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;

// DatabaseHelper类继承自SQLiteOpenHelper，用于管理数据库。
public class DatabaseHelper extends SQLiteOpenHelper {
    // 定义数据库名称和表名称。
    private static final String DATABASE_NAME = "SearchHistory.db"; // 数据库文件名。
    private static final String TABLE_NAME = "history"; // 表名。
    private static final String COL_1 = "ID"; // 列名，ID。
    private static final String COL_2 = "SEARCH_TEXT"; // 列名，搜索文本。

    // 新增方法，用于检查搜索内容是否已存在
    public boolean isSearchTextExists(String searchText) {
        SQLiteDatabase db = this.getReadableDatabase();
        String query = "SELECT * FROM " + TABLE_NAME + " WHERE " + COL_2 + " = ?";
        Cursor cursor = db.rawQuery(query, new String[] { searchText });
        boolean exists = cursor.getCount() > 0;
        cursor.close();
        return exists;
    }

    // 构造函数，传入上下文并调用父类构造函数。
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    // 创建数据库时调用，用于创建表。
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 执行SQL语句创建表。
        db.execSQL("CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, SEARCH_TEXT TEXT)");
    }

    // 更新数据库版本时调用。
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 删除旧表并创建新表。
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    // 插入数据的方法。
    public boolean insertData(String searchText) {
        if (!isSearchTextExists(searchText)){
            // 获取可写数据库对象。
            SQLiteDatabase db = this.getWritableDatabase();
            // 使用ContentValues添加数据。
            ContentValues contentValues = new ContentValues();
            contentValues.put(COL_2, searchText); // 添加搜索文本。
            // 插入数据到表中。
            long result = db.insert(TABLE_NAME, null, contentValues);
            // 如果插入成功返回true，否则返回false。
            return result != -1;
        }
        return false;
    }

    // 获取所有数据的方法。
    public ArrayList<String> getAllData() {
        // 创建列表存储数据。
        ArrayList<String> list = new ArrayList<>();
        // 获取可读数据库对象。
        SQLiteDatabase db = this.getReadableDatabase();
        // 执行查询所有数据的SQL语句。
        Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);

        // 遍历结果集。
        if (cursor.moveToFirst()) {
            do {
                // 将每一行的搜索文本添加到列表中。
                list.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }
        // 关闭游标。
        cursor.close();
        // 返回数据列表。
        return list;
    }

    // 新增方法，用于清空历史记录
    public void clearHistory() {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_NAME, null, null);
    }
}
